iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 7
1

https://ithelp.ithome.com.tw/upload/images/20190921/20118842YYgVpK1EKr.jpg

昨天介紹完數字 今天來談談 字串吧

字串(string)

使用方法

在 Ruby 要建立字串,可以這樣寫:

name = '魯蛇' #等號是指定給的意思
cat = "貓貓"

這樣輸入name的話 就會得到 ‘魯蛇’ 輸入cat會得到 ‘貓貓’,等等!!有注意到引號嗎?
單引號(Single Quote)或雙引號(Double Quote)
單引號跟雙引號做出來的字串本質上沒有差別,最主要的差別就是雙引號的字串可以處理字串安插,但單引號字串則不會處理。

字串安插(String Interpolation)

字串可以使用加號來進行組合、串接,像這樣:

name = "葉問"
number = 10

puts "你好! 我是" + name

#=> 你好! 我是 葉問

puts "我是" + name + "我要打" + number + "個"

#=> 會顯示錯誤 因為字串跟數字沒辦法相加 所以怎麼辦呢?

puts "我是" + name + "我要打" + number.to_s + "個"
#=> 我是葉問 我要打10個

字串跟數字無法做相加,上面的.to_s 是把數字轉換字串(string),也可以用另一種方式

name = "葉問"
number = 10

puts "我是 #{name} 我要打 #{number} 個"
#=> 我是葉問 我要打10個

記得剛剛前面講什麼嗎 單引號不會處理字串安插 所以上面的例子如果換成單引號的話 他會印出

#=>我是 #{name} 我要打 #{number} 個

稍微要注意一下

蛤? 你說你想要在雙引號裡放雙引號,或是單引號裡放單引號 怎麼做。為了可以正常呈現字串,需要使用反斜線來跳脫(escape)這個引號,告訴 Ruby 說「這是一個普通的引號,不是用來包字串的那個引號喔」

puts "我說\"雙引號需要使用反斜線來處理!\""
# => 印出「我說"雙引號需要使用反斜線來處理!"」

你覺得這樣引號包引號會看得眼花嗎 ruby也有提供另外一種方式,分別是 %Q 跟 %q

name = "鋼鐵人"

puts %Q(你好,#{name})                   # 跟雙引號一樣,可以使用字串安插
# => 印出「你好,鋼鐵人」

puts %Q(你好,鋼鐵人"'"'"'"'"''"'"'")    # 要放幾個引號都可以
# => 印出「你好,鋼鐵人"'"'"'"'"''"'"'"」

puts %q(你好,#{name})                   # 跟單引號一樣,不會處理字串安插
# => 印出「你好,#{name}」

計算字串長度

puts "love you 3000 times".length
#=>19(空格也算喔)

字串大小寫轉換
使用 downcase 方法可讓字母全部變小寫、使用 upcase 方法可讓方法全部變大寫,swapcase 則是讓大小寫互相轉換:

puts "abc".upcase
#=> ABC
puts "ABC".downcase
#=> abc

檢查是否為空字串
使用 .empty?

puts "".empty? 
#=>true
puts " ".empty?
    #=>false  #空白字元(space)不算是空字串

想要知道某個字母在字串中共出現幾次?

words = 'adffddddaacgrgretr'
puts words.count("d")
#=>5

怎麼更改一段句子裡面的字?

puts "PHP is good, and I love PHP".sub(/PHP/, "Ruby")
  # sub 只會換掉最先遇到的那個字串
  # => 印出「Ruby is good, and I love PHP」

  puts "PHP is good, and I love PHP".gsub(/PHP/, "Ruby")
  # gsub 會換掉全部符合的字串
  # => 印出「Ruby is good, and I love Ruby」


上一篇
DAY6 數字
下一篇
DAY8 陣列 (Array)
系列文
毫無基礎學習 Ruby on Rails 的 甘苦心得30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
阿展展展
iT邦好手 1 級 ‧ 2020-05-24 20:38:10

我完全不知道我在ㄍㄢˋ三小XD

我要留言

立即登入留言